package com.tpsix.enums;

import com.tpsix.util.StrUtil;
import lombok.Getter;

@Getter
public enum SensitiveTypeEnum {

    /**
     * 密码全部隐藏
     */
    PASSWORD {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, 0, str.length());
        }
    },

    /**
     * 真实名称
     */
    CHINESE_NAME {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, 1, str.length());
        }
    },

    /**
     * 身份证号
     */
    ID_CARD {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, 0, str.length() - 4);
        }
    },

    /**
     * 座机号
     */
    PHONE {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, 0, str.length() - 4);
        }
    },

    /**
     * 手机号
     */
    MOBILE {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, 3, str.length() - 4);
        }
    },

    /**
     * 地址
     */
    ADDRESS {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, str.indexOf(StrUtil.C_AREA) + 1, str.length() );
        }
    },

    /**
     * 电子邮件
     */
    EMAIL {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, 1, str.indexOf(StrUtil.C_EMAIL));
        }
    },

    /**
     * 银行卡
     */
    BANK_CARD {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, 6, str.length() - 4);
        }
    },

    /**
     * 公司开户银行联号
     */
    CNAPS_CODE {
        @Override
        public String encode(String str) {
            return StrUtil.hide(str, 2, str.length());
        }
    };

    public abstract String encode(String str);

}
